/************************************************
 * Author       :   XXY
 * Blog         :   https://www.cnblogs.com/jzyl
 * Email        :   1047185209@QQ.com
 * FileName     :   AssetModificationEvent.cs
 * CreateData   :   2023/4/28 10:23:54
 * UnityVersion :   2020.3.33f1c2
 * Description  :   资源修改事件
************************************************/

#pragma warning disable CS0436 // 类型与导入类型冲突

using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEditor.VersionControl;
using UnityEngine;

public class AssetModificationEvent : UnityEditor.AssetModificationProcessor
{
    [InitializeOnLoadMethod]
    private static void Init()
    {

    }
    /// <summary>
    /// 当一个或多个文件的文件模式更改时，Unity调用此方法。
    /// 字符串数组指定更改的文件。文件模式指定新的文件模式。如果实现了此方法，则该方法必须是静态的。
    /// </summary>
    /// <param name="paths"></param>
    /// <param name="mode"></param>
    static void FileModeChanged(string[] paths, FileMode mode)
    {
        //Debug.Log("文件被更改");
    }
    /// <summary>
    /// Unity 在即将创建未导入的资源（例如，.meta 文件）时调用此方法。
    /// </summary>
    /// <param name="filePath"></param>
    private static void OnWillCreateAsset(string filePath)
    {
        //Debug.Log("创建文件:" + filePath);
    }
    /// <summary>
    /// 当 Unity 即将从磁盘中删除资源时，则会调用此方法。
    /// </summary>
    /// <param name="path"></param>
    /// <param name="options"></param>
    /// <returns></returns>
    private static AssetDeleteResult OnWillDeleteAsset(string path, RemoveAssetOptions options)
    {
        //Debug.Log("删除文件:" + path);
        return AssetDeleteResult.DidNotDelete;
    }
    /// <summary>
    /// Unity 即将在磁盘上移动资源时会调用此方法。
    /// </summary>
    /// <param name="sourcePath"></param>
    /// <param name="destinationPath"></param>
    /// <returns></returns>
    private static AssetMoveResult OnWillMoveAsset(string sourcePath, string destinationPath)
    {
        //Debug.Log("移动文件:" + sourcePath);
        return AssetMoveResult.DidNotMove; ;
    }
    /// <summary>
    /// Unity 即将向磁盘写入序列化资源或场景文件时会调用此方法。
    /// </summary>
    /// <param name="paths"></param>
    /// <returns></returns>
    static string[] OnWillSaveAssets(string[] paths)
    {
        //Debug.Log("文件被保存");
        return paths;
    }
}
